package legacy



const (
	// 协议常量定义
	StartMarkerSize    = 4     // 起始位长度
	SequenceSize       = 2     // 序列号长度
	PacketTypeSize     = 1     // 数据包类型长度
	PacketLengthSize   = 4     // 数据包长度字段长度
	FontNameSize       = 32    // 字体名称长度
	FontSizeSize       = 4     // 字号长度
	FontWidthSize      = 4     // 字宽长度
	CharSpacingSize    = 4     // 字间隔长度
	RotationSize       = 4     // 旋转角度长度
	BoldSize           = 4     // 加粗标志长度
	ItalicSize         = 4     // 斜体标志长度
	StyleSize          = 4     // 样式长度
	XCoordSize         = 4     // X坐标长度
	YCoordSize         = 4     // Y坐标长度
	ReservedSize       = 4     // 保留字节长度
	ChecksumSize       = 2     // 校验和长度
	StopMarkerSize     = 2     // 停止位长度
	
	// 固定头部长度（不包含可变长度的文本）
	FixedHeaderSize = StartMarkerSize + SequenceSize + PacketTypeSize + PacketLengthSize +
		FontNameSize + FontSizeSize + FontWidthSize + CharSpacingSize + RotationSize +
		BoldSize + ItalicSize + StyleSize + XCoordSize + YCoordSize
	
	// 固定尾部长度
	FixedTailSize = ReservedSize + ChecksumSize + StopMarkerSize
	
	// 最小包长度（不包含文本内容）
	MinPacketSize = FixedHeaderSize + FixedTailSize
	
	// 协议固定值
	StartMarker1 = 0x5A
	StartMarker2 = 0x4B
	StartMarker3 = 0x43
	StartMarker4 = 0x54
	PacketType   = 0x01
	StopMarker1  = 0x0D
	StopMarker2  = 0x0A
	
	// 文本长度限制
	MaxTextLength = 103200
	MinTextLength = 1
	
	// 字体样式常量
	StyleSolid     = 0x00 // 实体
	StyleDotMatrix = 0x01 // 圆点阵
	StyleSquareMatrix = 0x02 // 方点阵
	StyleStrikethrough = 0x03 // 删除体

	// 字体
	Style_simhei="simhei.ttf"  // 黑体
	Style_simsun="simsun.ttf"  // 宋体
)

// Packet 表示协议数据包
type Packet struct {
	// 固定头部
	StartMarker   [4]byte // 起始位 (4字节): 0x5A 0x4B 0x43 0x54
	Sequence      uint16  // 序列号 (2字节): 自动递增
	PacketType    uint8   // 数据包类型 (1字节): 固定值 0x01
	PacketLength  uint32  // 数据包长度 (4字节): 小端模式
	
	// 字体设置
	FontName      [32]byte // 字体 (32字节): UTF8编码，不足32位补零
	FontSize      uint32   // 字号 (4字节): 12-1000，小端模式
	FontWidth     uint32   // 字宽 (4字节): 12-1000，小端模式
	CharSpacing   uint32   // 字间隔 (4字节): 0-999999，小端模式
	Rotation      uint32   // 旋转角度 (4字节): 0-90，小端模式
	Bold          uint32   // 加粗 (4字节): 0不加粗，其他值加粗，小端模式
	Italic        uint32   // 斜体 (4字节): 0正常，其他值斜体，小端模式
	Style         uint32   // 样式 (4字节): 见样式常量，小端模式
	
	// 坐标
	XCoord        uint32   // 横坐标 (4字节): 0-999999，小端模式
	YCoord        uint32   // 纵坐标 (4字节): 0-999999，小端模式
	
	// 可变内容
	Text          []byte   // 文本内容: UTF8编码，长度1-103200
	
	// 固定尾部
	Reserved      [4]byte  // 保留字节 (4字节): 无需解析
	Checksum      uint16   // 校验和 (2字节): CRC16校验值
	StopMarker    [2]byte  // 停止位 (2字节): 0x0D 0x0A
}

// 全局序列号计数器
var sequenceCounter uint16 = 0